有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java捕获异常类型两次

我们可以在main方法中捕获两次带有不同消息的异常类型吗?我想打印一个不同的警告

例:

 try {
    // some code
 } catch (NumberFormatException e) {
    System.out.println("Wrong input!"); 
 } catch (NumberFormatException e) {
    System.out.println("No valid number!"); 
 }

共 (4) 个答案

  1. # 1 楼答案

    您不能捕获同一异常两次

    考虑下面的例子,

    try {
    
    } catch (FileNotFoundException e) {
        System.err.println("FileNotFoundException: " + e.getMessage());
        throw new SampleException(e);
    
    } catch (IOException e) {
        System.err.println("Caught IOException: " + e.getMessage());
    }
    

    这里,

    两个处理程序都打印错误消息。第二个处理程序不做其他事情。通过捕获第一个处理程序未捕获的任何IOException,它允许程序继续执行

    除了打印消息外,第一个处理程序还抛出一个用户定义的异常

  2. # 2 楼答案

    不能捕获同一异常类型(如NumberFormatException)两次。我建议您捕获一次,但在catch块中,您可以打印两条消息

  3. # 3 楼答案

    您不能捕获同一异常两次

    您可以做的是在代码中抛出一个自定义异常,并在需要不同行为时捕获它

    try{
       ...
       throw new YourException(yourMessage);
    }catch(YourException e){
    
    }
    
  4. # 4 楼答案

    据我所知,您希望为您的异常显示正确的消息:

     try {
        // some code
     } catch (NumberFormatException e) {
        System.out.println(e.getMessage()); 
     }